package com.yh.service;

import com.yh.entity.Movie;
import com.yh.vo.CustomPageAndNavigate;
import com.yh.vo.ScreenVO;

/**
 * @author yuhuan
 * @date 2022/01/13
 */
public interface ElasticsearchService {
    /**
     * 索引初始化，失败时，会尝试删除索引并重新初始化
     *
     * @return 返回初始化结果
     */
    public boolean autoInitIndex();

    /**
     * 删除索引
     *
     * @return 返回删除结果
     */
    public boolean deleteIndex();

    /**
     * 创建文档
     *
     * @param movie 需要创建文档的数据
     */
    public void createDocument(Movie movie);

    /**
     * 删除文档
     *
     * @param movieId 影片的ID
     */
    public void deleteDocument(int movieId);

    /**
     * 修改文档
     *
     * @param movie 需要修改的数据
     */
    public void updateDocument(Movie movie);

    /**
     * 根据关键字搜索影片信息
     *
     * @param keyWord  搜索影片的关键字
     * @param pageNum  当前页
     * @param pageSize 页大小
     * @return 返回自定义的分页信息
     */
    public CustomPageAndNavigate searchOfKeyWord(String keyWord, int pageNum, int pageSize);

    /**
     * 根据筛选条件搜索影片信息
     *
     * @param screenVO 封装了搜索条件的对象（包含分页参数）
     * @return 返回自定义的分页信息
     */
    public CustomPageAndNavigate searchByTypeAndCountryAndYear(ScreenVO screenVO);
}
